package c09泛型;

import java.util.ArrayList;
import java.util.List;

/**
 * 总结：只要记住Java类不存在泛型类就行！而静态成员是与类相关的，与创建的对象无关，如果在里面使用类的泛型，
 * 那么就无法在创建对象时指明实际类型，所以无法使用！静态方法要想定义成泛型的，就必须定义成泛型方法！
 * 因为不存在泛型类，所以就更不能在instanceof后面使用啦！
 *
 * @author 炜sama
 */
public class 不能用泛型的地方<T> {
	static {
		int i = 0;
//		T t;//错误！不能在静态代码块里使用泛型！
	}

	//下面代码错误，不能在静态Field声明中使用类型形参
//	static T info;
	T age;

	public void foo(T msg) {
		List<String> l = new ArrayList<>();
		if (l instanceof List) {
		}//这样是正确的
//		if (l instanceof List<String>) {}//错误！在instanceof后面不能使用泛型！
	}

	//下面代码错误，不能在静态方法声明中使用类型形参及泛型返回值！
//	public static void bar(T msg){}
//	public static T m(String msg){}
	public static <S> void m(S msg) {
	}//正确！
}
